package ch.admin;

import java.util.HashMap;
import java.util.Iterator;

import ch.mailbox.User;
import ch.mailbox.IteratorUser;

/**
 * Classe con i metodi per la creazione dei file html dinamici
 * 
 * @author D. Dolfini
 */
public class BuildPage
{
  private static HashMap< String, String > hashMap = new HashMap< String, String >();

  /**
   * Crea l'hashmap con il codice da sostituire nelle pagine html
   */
  private static void getHashMap()
  {
    String code = "";
    String htmlFormatting = "\n" + "        ";
    IteratorUser userList = User.getUserIterator();

    // Inserisco una posizione nell'hashmap per i file senza sostituzioni
    hashMap.put( "<!--***noreplacement***-->", "" );

    // Creo la lista degli utenti e la inserisco nell'hashmap
    while ( userList.hasNext() )
    {
      User user = userList.next();

      code +=
          "<tr>" + htmlFormatting +
              "<td align=\"right\">" + user.getId() + "</td>" + htmlFormatting +
              "<td align=\"left\">" + user.getEmailAddress() + "</td>" + htmlFormatting +
              "<td align=\"left\">" + user.getFirstName() + "</td>" + htmlFormatting +
              "<td align=\"left\">" + user.getLastName() + "</td>" + htmlFormatting +
              "<td align=\"left\">" + user.getRegistrationDate() + "</td>" + htmlFormatting +
              "<td align=\"left\">" + user.getPassword() + "</td>" + htmlFormatting +
              "<td align=\"left\">" + user.getEnabled() + "</td>" + "\n" + "    " +
              "</tr>" + "\n";
    }
    hashMap.put( "<!--***userList***-->", code );
  }

  /**
   * Sostituisce tutte le chiavi nel file con il contenuto dell'hashmap
   * 
   * @param filename
   *          il nome del file in cui si sostituiranno le chiavi
   * @param key
   *          l'array contenenti le chiavi da cercare nel file
   * @return una stringa contenente la pagina html con il codice sostituito
   */
  static String buildPage( String filename )
  {
    getHashMap();

    String file = FileIO.read( filename );
    String output = "";
    Iterator< String > iterator = hashMap.keySet().iterator();

    while ( iterator.hasNext() )
    {
      String key = iterator.next();

      output = file.replace( key, hashMap.get( key ) );
    }

    return output;
  }
}
